/**
 * 发送get请求
 * @param {string} url 请求地址
 * @param {object} params 请求参数
 * @param {function} callback 回调函数
 * @param {string|undefined} type 返回数据类型
 * @param {object} headers 自定义请求头
 * @return undefined
 */
function get(url, params, callback, type, headers) {
    // 一、创建xhr对象
    const xhr = new XMLHttpRequest
    // 二、监控请求状态
    xhr.onreadystatechange = () => {
        // 判断后端是否返回数据
        if (xhr.readyState === 4) {
            // 成功
            if (xhr.status === 200) {
                // 获取数据  result 
                let res = xhr.responseText
                if (type === 'json') res = JSON.parse(xhr.responseText)
                // 逻辑处理
                callback(res)
            } else {
                console.log('瑕疵：', xhr.status)
            }
        }
    }
    // 三、设置请求方式、请求地址
    // 3.1 定义空数组
    let temp = []
    // 3.2 遍历对象for in key键 params[key]数据
    for (let key in params) {
        // 3.3 将数据按照 `键=值`格式push到数组中
        temp.push(`${key}=${params[key]}`)
    }
    // 3.4 最后数组变字符串
    // xhr.open('get', 请求地址?请求参数)
    xhr.open('get', `${url}?${temp.join('&')}`)
    for (let key in headers) {
        xhr.setRequestHeader(key, headers[key])
    }
    // 四、发送请求
    xhr.send(null)
}